/**
 * @function gethas 获取商品规格对应列表是否激活
 * @param indexArr 当前选中的属性索引 没有的情况是undefined
 * @param Allattr 商品所有规格对象
 * @param GoodsChooseType 规格列表组成的数组
 */
export function gethas(indexArr = [], Allattr, GoodsChooseType) {
  let n = 0
  let Allhas=false
  if (indexArr.length==1) {
    Allhas=true
  }
  if (!Allhas) {
    indexArr.forEach((item, index) => {
      if (item != undefined) {
        n += 1
        // 不遍历当前已经选中的列表 将已经有选中列表的选中项设置为has=true
        // 拿着已经选中的项 例如已经选中n项 遍历其他项如果也有选中项的n次就将当前项社会组为true
        let attributeValue = GoodsChooseType[index][item].attributeValue
        for (let i = 0; i < Allattr.length; i++) {
          let itemlist = Allattr[i]  //单个商品的规格表   在所有的单个商品寻找和当前attributeValue相同的项
          /* 这里为什么是itemlist[inedx] 因为此时拿到的值在indexArr里的排名就是当前属性在 商品属性列表里的排名 将有的项的第 属性长度加一的位置的数量加一   */
          if (attributeValue == itemlist[index].attributeValue) {
            if (typeof itemlist[itemlist.length - 1] == 'number') {
              itemlist[indexArr.length] += 1
            } else {
              itemlist[indexArr.length] = 1
            }
          }
        }
      }
    })
  }
  for (let index = 0; index < Allattr.length; index++) {
    if (Allattr[index][indexArr.length] == n || (Allattr[index][indexArr.length] == undefined && n == 0) || Allhas ) {
      let list = Allattr[index]
      for (let i = 0; i < indexArr.length; i++) {
        list[i]['has'] = true
        let value=list[i].attributeValue
        for (let j = 0; j < GoodsChooseType[i].length; j++) {
          if (GoodsChooseType[i][j].attributeValue==value) {
            GoodsChooseType[i][j].has=true
          }
        }
      }
    }
  }
  return GoodsChooseType
}
/* 此方法的主要目的是在选中部分属性的时候能展示其他属性没有 此处是用has的值来标记的 */
/* 宗旨思想是 当X商品拥有等于我当前选中的属性对应规格值的数量的时候证明->在我选中属性的前提下当前商品是存在的 */
// 上方的n用来记录当前选中了几个属性 拿着GoodsChooseType和indexArr组成的数组拿到当前选中的值



